package com.bbs.web;

import com.alibaba.fastjson.JSONObject;
import com.bbs.common.consts.CommonConstant;
import com.bbs.common.dto.LoginDTO;
import com.bbs.common.vo.DataResult;
import com.bbs.common.vo.LoginVo;
import com.bbs.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import javax.validation.Valid;

@RestController
public class LoginController {

    @Autowired
    private LoginService loginService;

//    @PostMapping("login")
//    public DataResult login(@Valid @RequestBody LoginDTO loginDTO, HttpSession session) {
//        LoginVo login = loginService.login(loginDTO);
//        // 将登录成功后的用户信息存储到一个http会话中 常量用于指定会话中存储用户信息的属性名（避免硬编码字符串） 转成JSON字符串格式用于存储
//        session.setAttribute(CommonConstant.SESSION_USER, JSONObject.toJSONString(login));
//        return DataResult.success();
//    }

//    @PostMapping("login")
//    public DataResult login(@Valid @RequestBody LoginDTO loginDTO) {
//        return DataResult.success(loginService.login(loginDTO));
//    }

    @PostMapping("login")
    public DataResult login(@Valid @RequestBody LoginDTO loginDTO, HttpSession session) {
        LoginVo login = loginService.login(loginDTO);
        // 将登录成功后的用户信息存储到一个http会话中 常量用于指定会话中存储用户信息的属性名（避免硬编码字符串） 转成JSON字符串格式用于存储
        session.setAttribute(CommonConstant.SESSION_USER, JSONObject.toJSONString(login));
        return DataResult.success(login);
    }
}
